home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / QuakeTools / src / libqdisplay / tables.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-11  |  2.8 KB  |  102 lines

  1. #define    LIBQDISPLAY_CORE
  2. #include "../include/libqdisplay.h"
  3.  
  4. float sinTable[MAX_ANGLE + 1], cosTable[MAX_ANGLE + 1];
  5.  
  6. void InitSinCosTables(void) {
  7.   short int countFlow;
  8.   double piFlow;
  9.   float *sinFlow = &sinTable[MAX_ANGLE] + 1;
  10.   float *cosFlow = &cosTable[MAX_ANGLE] + 1;
  11.  
  12.   for (countFlow = MAX_ANGLE, piFlow = MAX_ANGLE * M_PI / 180; countFlow >= 0; countFlow--, piFlow -= M_PI / 180) {
  13.     *--sinFlow = sin(piFlow);
  14.     *--cosFlow = cos(piFlow);
  15.   }
  16. };
  17.  
  18. int multTMap[MAX_MULTX][MAX_MULTY];
  19. bool multDone = FALSE;
  20. int *multMuls = &multTMap[0][0];
  21. int *multRows = 0;
  22.  
  23. void InitMultTables(int width, int height) {
  24.   int *lmulTables;
  25.   short int i, j;
  26.   int maxX;
  27.   
  28.   if(!multDone) {
  29.     lmulTables = &multTMap[MAX_MULTX - 1][MAX_MULTY - 1] + 1;
  30.     maxX = (MAX_MULTX - 1) * (MAX_MULTY - 1);
  31.  
  32.     for(i = MAX_MULTX - 1; i >= 0; i--) {
  33.       int maxY = maxX;
  34.     
  35.       for(j = MAX_MULTY - 1; j >= 0; j--) {
  36.         *--lmulTables = maxY;
  37.         maxY -= (int)i;
  38.       }
  39.       maxX -= MAX_MULTY - 1;
  40.     }
  41.     multDone = TRUE;
  42.   }
  43.  
  44.   if(multRows)
  45.     tfree(multRows);
  46.   if((multRows = (int *)tmalloc(sizeof(int) * (height + 1)))) {
  47.     lmulTables = multRows + height + 1;
  48.     
  49.     for(i = height, maxX = width * height; i >= 0; i--, maxX -= width)
  50.       *--lmulTables = maxX;
  51.   }
  52.   else
  53.     Error("failed to allocate multiplication-tables\n");
  54. };
  55.  
  56. /*
  57. unsigned char *cachedTransparency = 0;
  58. char cachedTransTemplate[] = "TArray.%2d";
  59. char cachedTransName[] = "TArray.??";
  60.  
  61. void getTransparency(int transVal) {
  62.   FILE *cachedTransFile;
  63.   sprintf(cachedTransName, cachedTransTemplate, transVal);
  64.   
  65.   if(!cachedTransparency)
  66.     if(!(cachedTransparency = (unsigned char *)tmalloc(256 * 256 * sizeof(unsigned char))))
  67.       Error("failed to allocate transparency\n");
  68.   
  69.   mprintf("build transparency for density %2d\n", transVal);
  70.   if(!(cachedTransFile = fopen(cachedTransName, READWRITE_BINARY_OLD))) {
  71.     int i, j;
  72.     struct rgb *actPel;
  73.     
  74.     for (i = 0; i < 256; i++) {
  75.       actPel = &cachedPalette[i];
  76.       for (j = 0; j < 256; j++) {
  77.         int R, G, B;
  78.         struct rgb matchPel;
  79.         
  80.         R = ((((int)(cachedPalette[j].r - actPel->r) * transVal) / 100) + (int)actPel->r);
  81.         G = ((((int)(cachedPalette[j].g - actPel->g) * transVal) / 100) + (int)actPel->g);
  82.         B = ((((int)(cachedPalette[j].b - actPel->b) * transVal) / 100) + (int)actPel->b);
  83.         
  84.         matchPel.r = (unsigned char)R;
  85.         matchPel.g = (unsigned char)G;
  86.         matchPel.b = (unsigned char)B;
  87.         cachedTransparency[(i << 8) + j] = Match(&matchPel, cachedPalette);
  88.       }
  89.       mprogress(256, i + 1);
  90.     }
  91.     if((cachedTransFile = fopen(cachedTransName, WRITE_BINARY))) {
  92.       fwrite(cachedTransparency, 256, 256, cachedTransFile);
  93.       fclose(cachedTransFile);
  94.     }
  95.   }
  96.   else {
  97.     fread(cachedTransparency, 256, 256, cachedTransFile);
  98.     fclose(cachedTransFile);
  99.   }
  100. }
  101.  */
  102.